//
//  LyNetWorkTool.swift
//  LySwift微博
//
//  Created by 贠明东 on 15/11/26.
//  Copyright © 2015年 itcCZ. All rights reserved.
//

import UIKit

import AFNetworking

///网络单例

class LyNetWorkTool: AFHTTPSessionManager {

    //单例
    static let sharedInstance : LyNetWorkTool = {
        //baseURL
        let baseURL = NSURL(string: "https://api.weibo.com/")
        let tool = LyNetWorkTool(baseURL: baseURL)
        
        //添加响应序列化器
        tool.responseSerializer.acceptableContentTypes?.insert("text/plain")
        
        return tool
    }()
    
    //MARk: -Oauth授权
    
    /// 申请应用时分配的AppKey
    private let client_id = "40643547"
    
    private let client_secret = "40f8bbc2b0848c24d7962605ac17c2d0"
    
    ///授权回调地址:  一定要一模一样
     let redirect_uri = "http://www.bilibili.com/"
    
    ///返回授权界面的URL地址
    func oauthURL() -> NSURL {
        // GET方式拼接登录界面的请求地址
        let urlString = "https://api.weibo.com/oauth2/authorize?client_id=\(client_id)&redirect_uri=\(redirect_uri)"
        return NSURL (string: urlString)!
    }
    
    //:MARK - 网络工具类加载AccessToken，只负责加载数据，让别人来加载数据(通过闭包来告诉别人 )
    func loadAccessToken(code: String, finshed: (reult: [String: AnyObject]?, error: NSError?) -> ())
    {
        //URL地址
        let urlString = "https://api.weibo.com/oauth2/access_token"
        //请求参数
        let parameters = [
            "client_id" : client_id,
            "client_secret" : client_secret,
            "grant_type" : "authorization_code",
            "code" : code,
            "redirect_uri" : redirect_uri
        ]
        
        //发送POST请求
        POST(urlString, parameters: parameters, success: { (_, result) -> Void in
//            print("result =\(result)")
            
            // as! 表示强制转换 如果是false 有风险！要是转不了的话，会直接崩掉
            // as? 可选， 如果可以转换的话，就转，如果转不了的话，就返回一个nil  —>"比较安全"
            finshed(reult: result as? [String : AnyObject]  , error: nil)
            }) { (_,error) -> Void in 
//                print("error =\(error)")
                finshed(reult: nil, error: error)
        }
    }
}






